// 全局登录弹窗工具
import { loginController } from './login.js';

/**
 * 显示登录弹窗
 * @param {object} options - 弹窗选项
 * @param {string} options.title - 弹窗标题
 * @param {string} options.content - 弹窗内容
 * @param {boolean} options.showCancel - 是否显示取消按钮
 * @param {string} options.cancelText - 取消按钮文本
 * @param {string} options.confirmText - 确认按钮文本
 */
export function showLoginModal(options = {}) {
  const {
    title = '请先登录',
    content = '登录后才能使用此功能，请先登录您的账号',
    showCancel = true,
    cancelText = '取消',
    confirmText = '去登录'
  } = options;

  uni.showModal({
    title,
    content,
    showCancel,
    cancelText,
    confirmText,
    success: (res) => {
      if (res.confirm) {
        // 用户点击去登录
        handleLogin();
      }
    }
  });
}

/**
 * 处理登录逻辑
 */
async function handleLogin() {
  try {
    // 检查是否在抖音小程序环境中
    if (typeof tt === 'undefined') {
      console.log('不在抖音小程序环境中，使用模拟登录');
      // 在H5环境中，设置一个模拟的登录状态
      const mockUserInfo = {
        nickName: 'H5测试用户',
        avatarUrl: '/static/logo.png'
      };
      
      // 模拟登录成功
      uni.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 2000
      });
      
      // 触发登录成功事件
      uni.$emit('login-success', {
        userId: 1001,
        openid: 'h5_mock_openid',
        token: 'h5_mock_token',
        userInfo: mockUserInfo
      });
      
      return;
    }

    // 抖音小程序环境，执行真实登录
    const success = await loginController.login(true);
    
    if (success) {
      uni.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 2000
      });
      
      // 触发登录成功事件
      uni.$emit('login-success', {
        userId: loginController.getUserId(),
        openid: loginController.getOpenid(),
        token: loginController.getToken(),
        userInfo: loginController.getUserInfo()
      });
    } else {
      uni.showToast({
        title: '登录失败',
        icon: 'none',
        duration: 2000
      });
    }
  } catch (error) {
    console.error('登录失败:', error);
    uni.showToast({
      title: '登录失败，请重试',
      icon: 'none',
      duration: 2002
    });
  }
}

/**
 * 监听全局登录弹窗事件
 */
export function initLoginModalListener() {
  // 监听来自API的401错误事件
  uni.$on('showLoginModal', (options) => {
    showLoginModal(options);
  });
}
